gpx_write_common_extensions(const waypoint* waypointp, const gpx_point_type point_type)
{
// gpx version we are writing is >= 1.1.
- if ((opt_humminbirdext && (waypointp->depth != 0 || waypointp->temperature != 0)) ||
- (opt_garminext && gpxpt_waypoint==point_type && (waypointp->temperature != 0 || waypointp->depth != 0)) ||
- (opt_garminext && gpxpt_track==point_type && (waypointp->temperature != 0 || waypointp->depth != 0 || waypointp->heartrate != 0 || waypointp->cadence != 0))) {
+ if ((opt_humminbirdext && (WAYPT_HAS(waypointp, depth) || WAYPT_HAS(waypointp, temperature))) ||
+ (opt_garminext && gpxpt_waypoint==point_type && (WAYPT_HAS(waypointp, temperature) || WAYPT_HAS(waypointp, depth))) ||
+ (opt_garminext && gpxpt_track==point_type && (WAYPT_HAS(waypointp, temperature) || WAYPT_HAS(waypointp, depth) || waypointp->heartrate != 0 || waypointp->cadence != 0))) {
writer.writeStartElement("extensions");
if (opt_humminbirdext) {
- if (waypointp->depth != 0) {
+ if (WAYPT_HAS(waypointp, depth)) {
writer.writeTextElement("h:depth", toString(waypointp->depth * 100.0));
}
- if (waypointp->temperature != 0) {
+ if (WAYPT_HAS(waypointp, temperature)) {
writer.writeTextElement("h:temperature", toString(waypointp->temperature));
}
}
// Although not required by the schema we assume that gpxtpx:TrackPointExtension must be a child of gpx:trkpt.
switch (point_type) {
case gpxpt_waypoint:
- if (waypointp->temperature != 0 || waypointp->depth != 0) {
+ if (WAYPT_HAS(waypointp, temperature) || WAYPT_HAS(waypointp, depth)) {
writer.writeStartElement("gpxx:WaypointExtension");
- if (waypointp->temperature != 0) {
+ if (WAYPT_HAS(waypointp, temperature)) {
writer.writeTextElement("gpxx:Temperature", toString(waypointp->temperature));
}
- if (waypointp->depth != 0) {
+ if (WAYPT_HAS(waypointp, depth)) {
writer.writeTextElement("gpxx:Depth", toString(waypointp->depth));
}
writer.writeEndElement(); // "gpxx:WaypointExtension"
/* we don't have any appropriate data for the children of gpxx:RoutePointExtension */
break;
case gpxpt_track:
- if (waypointp->temperature != 0 || waypointp->depth != 0 || waypointp->heartrate != 0 || waypointp->cadence != 0) {
+ if (WAYPT_HAS(waypointp, temperature) || WAYPT_HAS(waypointp, depth) || waypointp->heartrate != 0 || waypointp->cadence != 0) {
// gpxtpx:TrackPointExtension is a replacement for gpxx:TrackPointExtension.
writer.writeStartElement("gpxtpx:TrackPointExtension");
- if (waypointp->temperature != 0) {
+ if (WAYPT_HAS(waypointp, temperature)) {
writer.writeTextElement("gpxtpx:atemp", toString(waypointp->temperature));
}
- if (waypointp->depth != 0) {
+ if (WAYPT_HAS(waypointp, depth)) {
writer.writeTextElement("gpxtpx:depth", toString(waypointp->depth));
}
if (waypointp->heartrate != 0) {
--- /dev/null
+name, lat, lon, ele,depth,temp,heart,caden
+Lickskillet, 40.075297, -105.414373, 2294, , 20, 60, 85
+Gold Hill, 40.063311, -105.409614, 2514, , 18, 160, 45
+Barker Reservoir Dam, 39.966120, -105.482821, 2499, 37, , 50,
+Barker Reservoir Shore, 39.962905, -105.502236, 2499, 0, , 40,
+James Peak, 39.852048, -105.690364, 4063, , 0, 70,
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx version="1.1" creator="GPSBabel - http://www.gpsbabel.org" xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1">
+ <metadata>
+ <time>1970-01-01T00:00:00Z</time>
+ <bounds minlat="39.852048000" minlon="-105.690364000" maxlat="40.075297000" maxlon="-105.409614000"/>
+ </metadata>
+ <wpt lat="40.075297000" lon="-105.414373000">
+ <ele>2294.000000</ele>
+ <name>Lickskillet</name>
+ <cmt>Lickskillet</cmt>
+ <desc>Lickskillet</desc>
+ <extensions>
+ <gpxx:WaypointExtension>
+ <gpxx:Temperature>20.000000</gpxx:Temperature>
+ </gpxx:WaypointExtension>
+ </extensions>
+ </wpt>
+ <wpt lat="40.063311000" lon="-105.409614000">
+ <ele>2514.000000</ele>
+ <name>Gold Hill</name>
+ <cmt>Gold Hill</cmt>
+ <desc>Gold Hill</desc>
+ <extensions>
+ <gpxx:WaypointExtension>
+ <gpxx:Temperature>18.000000</gpxx:Temperature>
+ </gpxx:WaypointExtension>
+ </extensions>
+ </wpt>
+ <wpt lat="39.966120000" lon="-105.482821000">
+ <ele>2499.000000</ele>
+ <name>Barker Reservoir Dam</name>
+ <cmt>Barker Reservoir Dam</cmt>
+ <desc>Barker Reservoir Dam</desc>
+ <extensions>
+ <gpxx:WaypointExtension>
+ <gpxx:Depth>37.000000000</gpxx:Depth>
+ </gpxx:WaypointExtension>
+ </extensions>
+ </wpt>
+ <wpt lat="39.962905000" lon="-105.502236000">
+ <ele>2499.000000</ele>
+ <name>Barker Reservoir Shore</name>
+ <cmt>Barker Reservoir Shore</cmt>
+ <desc>Barker Reservoir Shore</desc>
+ <extensions>
+ <gpxx:WaypointExtension>
+ <gpxx:Depth>0.000000000</gpxx:Depth>
+ </gpxx:WaypointExtension>
+ </extensions>
+ </wpt>
+ <wpt lat="39.852048000" lon="-105.690364000">
+ <ele>4063.000000</ele>
+ <name>James Peak</name>
+ <cmt>James Peak</cmt>
+ <desc>James Peak</desc>
+ <extensions>
+ <gpxx:WaypointExtension>
+ <gpxx:Temperature>0.000000</gpxx:Temperature>
+ </gpxx:WaypointExtension>
+ </extensions>
+ </wpt>
+ <trk>
+ <trkseg>
+ <trkpt lat="40.075297000" lon="-105.414373000">
+ <ele>2294.000000</ele>
+ <name>Lickskillet</name>
+ <cmt>Lickskillet</cmt>
+ <desc>Lickskillet</desc>
+ <extensions>
+ <gpxtpx:TrackPointExtension>
+ <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+ <gpxtpx:hr>60</gpxtpx:hr>
+ <gpxtpx:cad>85</gpxtpx:cad>
+ </gpxtpx:TrackPointExtension>
+ </extensions>
+ </trkpt>
+ <trkpt lat="40.063311000" lon="-105.409614000">
+ <ele>2514.000000</ele>
+ <name>Gold Hill</name>
+ <cmt>Gold Hill</cmt>
+ <desc>Gold Hill</desc>
+ <extensions>
+ <gpxtpx:TrackPointExtension>
+ <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+ <gpxtpx:hr>160</gpxtpx:hr>
+ <gpxtpx:cad>45</gpxtpx:cad>
+ </gpxtpx:TrackPointExtension>
+ </extensions>
+ </trkpt>
+ <trkpt lat="39.966120000" lon="-105.482821000">
+ <ele>2499.000000</ele>
+ <name>Barker Reservoir Dam</name>
+ <cmt>Barker Reservoir Dam</cmt>
+ <desc>Barker Reservoir Dam</desc>
+ <extensions>
+ <gpxtpx:TrackPointExtension>
+ <gpxtpx:depth>37.000000000</gpxtpx:depth>
+ <gpxtpx:hr>50</gpxtpx:hr>
+ </gpxtpx:TrackPointExtension>
+ </extensions>
+ </trkpt>
+ <trkpt lat="39.962905000" lon="-105.502236000">
+ <ele>2499.000000</ele>
+ <name>Barker Reservoir Shore</name>
+ <cmt>Barker Reservoir Shore</cmt>
+ <desc>Barker Reservoir Shore</desc>
+ <extensions>
+ <gpxtpx:TrackPointExtension>
+ <gpxtpx:depth>0.000000000</gpxtpx:depth>
+ <gpxtpx:hr>40</gpxtpx:hr>
+ </gpxtpx:TrackPointExtension>
+ </extensions>
+ </trkpt>
+ <trkpt lat="39.852048000" lon="-105.690364000">
+ <ele>4063.000000</ele>
+ <name>James Peak</name>
+ <cmt>James Peak</cmt>
+ <desc>James Peak</desc>
+ <extensions>
+ <gpxtpx:TrackPointExtension>
+ <gpxtpx:atemp>0.000000</gpxtpx:atemp>
+ <gpxtpx:hr>70</gpxtpx:hr>
+ </gpxtpx:TrackPointExtension>
+ </extensions>
+ </trkpt>
+ </trkseg>
+ </trk>
+</gpx>
gpsbabel -i gpx -f ${REFERENCE}/basecamp.gpx -o gpx -F ${TMPDIR}/basecamp~gpx.gpx
compare ${REFERENCE}/basecamp~gpx.gpx ${TMPDIR}/basecamp~gpx.gpx
+rm -f ${TMPDIR}/extensiondata.gpx
+gpsbabel -i unicsv -f ${REFERENCE}/extensiondata.unicsv -x transform,trk=wpt -o gpx,garminextensions -F ${TMPDIR}/extensiondata.gpx
+compare ${REFERENCE}/extensiondata~unicsv.gpx ${TMPDIR}/extensiondata.gpx